import java.util.Stack;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 周斌
 * Date: 2024-03-17
 * Time: 15:04
 */
public class StackAchieveQueue {
    Stack<Integer> s1;
    Stack<Integer> s2;
    public StackAchieveQueue() {
        s1 = new Stack<>();
        s2 = new Stack<>();
    }

    public void push(int x) {
        //直接将s1当作一个入队的操作
        s1.push(x);
    }

    public int pop() {
        //判断s2中空不空
        if(!s2.isEmpty()) {
            //不空直接弹出元素
            return s2.pop();
        } else {
            //空则将s1中的元素全部都入到s2栈中，再弹出s2的元素
            int size = s1.size();
            for(int i=0; i<size; i++) {
                s2.push(s1.pop());
            }
        }
        return s2.pop();
    }

    public int peek() {
        //判断s2中空不空
        if(!s2.isEmpty()) {
            //不空直接返回栈顶元素
            return s2.peek();
        } else {
            //空则将s1中的元素全部都入到s2栈中，再返回s2栈顶的元素
            int size = s1.size();
            for(int i=0; i<size; i++) {
                s2.push(s1.pop());
            }
        }
        return s2.peek();
    }

    public boolean empty() {
        return s1.isEmpty() && s2.isEmpty();
    }
}
